home *** CD-ROM | disk | FTP | other *** search
/ Acorn User: China / Acorn User China CD-ROM (UK) (Disc A) / Acorn User China CD-ROM (UK) (Disc A).bin / DEMON / DEVELOPER / TTFNSRC0.ZIP / c / Folders < prev    next >
Encoding:
Text File  |  1995-04-22  |  1.9 KB  |  116 lines

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #include "DeskLib:Wimp.h"
  7. #include "DeskLib:Menu.h"
  8.  
  9. #include "Globals.h"
  10. #include "Misc.h"
  11.  
  12. char* Folders_FolderNameFromNumber(int num)
  13. {
  14.   int i;
  15.   group_element* grp;
  16.   group_element* pg;
  17.   char* result;
  18.  
  19.   grp=grouplist;
  20.   pg=grp;
  21.   i=-1;
  22.   while ((i<num) && (grp!=NULL))
  23.   {
  24.     if (strncmp(grp->name,"Folder",6)==0) i++;
  25.     pg=grp;
  26.     grp=grp->next;
  27.   }
  28.   if (i==num)
  29.   {
  30.     result=(pg->name)+7;
  31.   }
  32.   else
  33.   {
  34.     result=writablef;
  35.   }
  36.   return result;
  37. }
  38.  
  39.  
  40.  
  41. BOOL Folders_CreateMenu(void)
  42. {
  43.   group_element* gl;
  44.   int length;
  45.   BOOL result;
  46.   char* menudesc;
  47.  
  48.   if (folderlist!=NULL)
  49.   {
  50.     Menu_SDispose(folderlist);
  51.   }
  52.  
  53.   length=0;
  54.   gl=grouplist;
  55.   if (gl!=NULL)
  56.   {
  57.     result=TRUE;
  58.     while (gl!=NULL)
  59.     {
  60.       if (strncmp("Folder",gl->name,6)==0)
  61.       {
  62.         length=length+strlen(gl->name)+1-7;
  63.       }
  64.       gl=gl->next;
  65.     }
  66.     length=length+20;
  67.  
  68.     /* OK so now we know how long the meny description string needs to be */
  69.  
  70.     Misc_Mem_Alloc((void*)&menudesc, length);
  71.     if (menudesc==NULL)
  72.     {
  73.       result=FALSE;
  74.     }
  75.     else
  76.     {
  77.       int i;
  78.  
  79.       i=0;
  80.       (*menudesc)='\0';
  81.       gl=grouplist;
  82.       while (gl!=NULL)
  83.       {
  84.         if (strncmp("Folder",gl->name,6)==0)
  85.         {
  86.           if (strlen(menudesc)!=0) strcat(menudesc, ",");
  87.           strcat(menudesc, (gl->name)+7);
  88.           i++;
  89.         }
  90.         gl=gl->next;
  91.       }
  92.       if (i!=0)
  93.       {
  94.         strcat(menudesc, ",");
  95.       }
  96.       strcat(menudesc,"Writableiconn");
  97.  
  98.  
  99.       folderlist=Menu_New("Folders",menudesc);
  100.  
  101.       Menu_MakeWritable(folderlist, i, writablef, 32, validation);
  102.       Mem_Free((void*)&menudesc);
  103.       if (folderlist!=NULL)
  104.       {
  105.         Menu_AddSubMenu(artwmenu,2,folderlist);
  106.         Menu_AddSubMenu(selection,2,folderlist);
  107.       }
  108.     }
  109.   }
  110.   else
  111.   {
  112.     result=FALSE;
  113.   }
  114.   return result;
  115. }
  116.